0 CpxRelTRS
↳1 RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 38 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 29 ms)
↳10 CpxRNTS
↳11 InliningProof (UPPER BOUND(ID), 1164 ms)
↳12 CpxRNTS
↳13 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 8 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 196 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 8 ms)
↳20 CpxRNTS
↳21 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 631 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 60 ms)
↳26 CpxRNTS
↳27 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳28 CpxRNTS
↳29 IntTrsBoundProof (UPPER BOUND(ID), 281 ms)
↳30 CpxRNTS
↳31 IntTrsBoundProof (UPPER BOUND(ID), 39 ms)
↳32 CpxRNTS
↳33 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳34 CpxRNTS
↳35 IntTrsBoundProof (UPPER BOUND(ID), 5520 ms)
↳36 CpxRNTS
↳37 IntTrsBoundProof (UPPER BOUND(ID), 2331 ms)
↳38 CpxRNTS
↳39 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳40 CpxRNTS
↳41 IntTrsBoundProof (UPPER BOUND(ID), 1278 ms)
↳42 CpxRNTS
↳43 IntTrsBoundProof (UPPER BOUND(ID), 1093 ms)
↳44 CpxRNTS
↳45 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳46 CpxRNTS
↳47 IntTrsBoundProof (UPPER BOUND(ID), 6169 ms)
↳48 CpxRNTS
↳49 IntTrsBoundProof (UPPER BOUND(ID), 1726 ms)
↳50 CpxRNTS
↳51 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳52 CpxRNTS
↳53 IntTrsBoundProof (UPPER BOUND(ID), 913 ms)
↳54 CpxRNTS
↳55 IntTrsBoundProof (UPPER BOUND(ID), 25 ms)
↳56 CpxRNTS
↳57 FinalProof (⇔, 0 ms)
↳58 BOUNDS(1, n^2)
prefix(Cons(x', xs'), Cons(x, xs)) → and(!EQ(x', x), prefix(xs', xs))
domatch(Cons(x, xs), Nil, n) → Nil
domatch(Nil, Nil, n) → Cons(n, Nil)
prefix(Cons(x, xs), Nil) → False
prefix(Nil, cs) → True
domatch(patcs, Cons(x, xs), n) → domatch[Ite](prefix(patcs, Cons(x, xs)), patcs, Cons(x, xs), n)
eqNatList(Cons(x, xs), Cons(y, ys)) → eqNatList[Ite](!EQ(x, y), y, ys, x, xs)
eqNatList(Cons(x, xs), Nil) → False
eqNatList(Nil, Cons(y, ys)) → False
eqNatList(Nil, Nil) → True
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
strmatch(patstr, str) → domatch(patstr, str, Nil)
and(False, False) → False
and(True, False) → False
and(False, True) → False
and(True, True) → True
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0, S(y)) → False
!EQ(S(x), 0) → False
!EQ(0, 0) → True
domatch[Ite](False, patcs, Cons(x, xs), n) → domatch(patcs, xs, Cons(n, Cons(Nil, Nil)))
domatch[Ite](True, patcs, Cons(x, xs), n) → Cons(n, domatch(patcs, xs, Cons(n, Cons(Nil, Nil))))
eqNatList[Ite](False, y, ys, x, xs) → False
eqNatList[Ite](True, y, ys, x, xs) → eqNatList(xs, ys)
prefix(Cons(x', xs'), Cons(x, xs)) → and(!EQ(x', x), prefix(xs', xs)) [1]
domatch(Cons(x, xs), Nil, n) → Nil [1]
domatch(Nil, Nil, n) → Cons(n, Nil) [1]
prefix(Cons(x, xs), Nil) → False [1]
prefix(Nil, cs) → True [1]
domatch(patcs, Cons(x, xs), n) → domatch[Ite](prefix(patcs, Cons(x, xs)), patcs, Cons(x, xs), n) [1]
eqNatList(Cons(x, xs), Cons(y, ys)) → eqNatList[Ite](!EQ(x, y), y, ys, x, xs) [1]
eqNatList(Cons(x, xs), Nil) → False [1]
eqNatList(Nil, Cons(y, ys)) → False [1]
eqNatList(Nil, Nil) → True [1]
notEmpty(Cons(x, xs)) → True [1]
notEmpty(Nil) → False [1]
strmatch(patstr, str) → domatch(patstr, str, Nil) [1]
and(False, False) → False [0]
and(True, False) → False [0]
and(False, True) → False [0]
and(True, True) → True [0]
!EQ(S(x), S(y)) → !EQ(x, y) [0]
!EQ(0, S(y)) → False [0]
!EQ(S(x), 0) → False [0]
!EQ(0, 0) → True [0]
domatch[Ite](False, patcs, Cons(x, xs), n) → domatch(patcs, xs, Cons(n, Cons(Nil, Nil))) [0]
domatch[Ite](True, patcs, Cons(x, xs), n) → Cons(n, domatch(patcs, xs, Cons(n, Cons(Nil, Nil)))) [0]
eqNatList[Ite](False, y, ys, x, xs) → False [0]
eqNatList[Ite](True, y, ys, x, xs) → eqNatList(xs, ys) [0]
prefix(Cons(x', xs'), Cons(x, xs)) → and(!EQ(x', x), prefix(xs', xs)) [1]
domatch(Cons(x, xs), Nil, n) → Nil [1]
domatch(Nil, Nil, n) → Cons(n, Nil) [1]
prefix(Cons(x, xs), Nil) → False [1]
prefix(Nil, cs) → True [1]
domatch(patcs, Cons(x, xs), n) → domatch[Ite](prefix(patcs, Cons(x, xs)), patcs, Cons(x, xs), n) [1]
eqNatList(Cons(x, xs), Cons(y, ys)) → eqNatList[Ite](!EQ(x, y), y, ys, x, xs) [1]
eqNatList(Cons(x, xs), Nil) → False [1]
eqNatList(Nil, Cons(y, ys)) → False [1]
eqNatList(Nil, Nil) → True [1]
notEmpty(Cons(x, xs)) → True [1]
notEmpty(Nil) → False [1]
strmatch(patstr, str) → domatch(patstr, str, Nil) [1]
and(False, False) → False [0]
and(True, False) → False [0]
and(False, True) → False [0]
and(True, True) → True [0]
!EQ(S(x), S(y)) → !EQ(x, y) [0]
!EQ(0, S(y)) → False [0]
!EQ(S(x), 0) → False [0]
!EQ(0, 0) → True [0]
domatch[Ite](False, patcs, Cons(x, xs), n) → domatch(patcs, xs, Cons(n, Cons(Nil, Nil))) [0]
domatch[Ite](True, patcs, Cons(x, xs), n) → Cons(n, domatch(patcs, xs, Cons(n, Cons(Nil, Nil)))) [0]
eqNatList[Ite](False, y, ys, x, xs) → False [0]
eqNatList[Ite](True, y, ys, x, xs) → eqNatList(xs, ys) [0]
prefix :: Cons:Nil:S:0 → Cons:Nil:S:0 → False:True Cons :: Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 and :: False:True → False:True → False:True !EQ :: Cons:Nil:S:0 → Cons:Nil:S:0 → False:True domatch :: Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 Nil :: Cons:Nil:S:0 False :: False:True True :: False:True domatch[Ite] :: False:True → Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 eqNatList :: Cons:Nil:S:0 → Cons:Nil:S:0 → False:True eqNatList[Ite] :: False:True → Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 → False:True notEmpty :: Cons:Nil:S:0 → False:True strmatch :: Cons:Nil:S:0 → Cons:Nil:S:0 → Cons:Nil:S:0 S :: Cons:Nil:S:0 → Cons:Nil:S:0 0 :: Cons:Nil:S:0 |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
domatch
eqNatList
notEmpty
strmatch
prefix
and
!EQ
domatch[Ite]
eqNatList[Ite]
and(v0, v1) → null_and [0]
!EQ(v0, v1) → null_!EQ [0]
domatch[Ite](v0, v1, v2, v3) → null_domatch[Ite] [0]
eqNatList[Ite](v0, v1, v2, v3, v4) → null_eqNatList[Ite] [0]
prefix(v0, v1) → null_prefix [0]
null_and, null_!EQ, null_domatch[Ite], null_eqNatList[Ite], null_prefix
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Nil => 1
False => 1
True => 2
0 => 0
null_and => 0
null_!EQ => 0
null_domatch[Ite] => 0
null_eqNatList[Ite] => 0
null_prefix => 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' = 1 + y, y >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: x >= 0, z = 1 + x, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
!EQ(z, z') -{ 0 }→ !EQ(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, n) :|: xs >= 0, n >= 0, z'' = n, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, n) :|: xs >= 0, n >= 0, z'' = n, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, patcs, 1 + x + xs, n) :|: patcs >= 0, xs >= 0, n >= 0, z'' = n, z' = 1 + x + xs, x >= 0, z = patcs
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, n >= 0, z'' = n, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + n + 1 :|: n >= 0, z'' = n, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(patcs, xs, 1 + n + (1 + 1 + 1)) :|: patcs >= 0, xs >= 0, n >= 0, z1 = n, z = 1, x >= 0, z' = patcs, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + n + domatch(patcs, xs, 1 + n + (1 + 1 + 1)) :|: z = 2, patcs >= 0, xs >= 0, n >= 0, z1 = n, x >= 0, z' = patcs, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, ys, 0, xs) :|: xs >= 0, ys >= 0, z' = 1 + 0 + ys, z = 1 + 0 + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, ys, 1 + x13, xs) :|: x13 >= 0, xs >= 0, ys >= 0, z' = 1 + 0 + ys, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, xs) :|: xs >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, z = 1 + 0 + xs, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(xs, ys) :|: z = 2, xs >= 0, ys >= 0, y >= 0, x >= 0, z'' = ys, z' = y, z2 = xs, z1 = x
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: xs >= 0, z = 1, ys >= 0, y >= 0, x >= 0, z'' = ys, z' = y, z2 = xs, z1 = x
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(2, 2) :|: xs >= 0, z' = 1 + 0 + xs, z = 1 + 0 + 1
prefix(z, z') -{ 2 }→ and(2, 1) :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0
prefix(z, z') -{ 1 }→ and(2, 0) :|: xs >= 0, z' = 1 + 0 + xs, z = 1 + 0 + xs', xs' >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(1, 2) :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1
prefix(z, z') -{ 2 }→ and(1, 2) :|: xs >= 0, x1 >= 0, z' = 1 + 0 + xs, z = 1 + (1 + x1) + 1
prefix(z, z') -{ 2 }→ and(1, 1) :|: x5 >= 0, z' = 1 + (1 + y'') + 1, y'' >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4)
prefix(z, z') -{ 2 }→ and(1, 1) :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0
prefix(z, z') -{ 1 }→ and(1, 0) :|: xs >= 0, z = 1 + 0 + xs', xs' >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0
prefix(z, z') -{ 1 }→ and(1, 0) :|: xs >= 0, x1 >= 0, z' = 1 + 0 + xs, z = 1 + (1 + x1) + xs', xs' >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(0, 2) :|: xs >= 0, z' = 1 + x + xs, x' >= 0, x >= 0, z = 1 + x' + 1
prefix(z, z') -{ 2 }→ and(0, 1) :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, x >= 0, x11 >= 0, xs10 >= 0, z' = 1 + x + 1
prefix(z, z') -{ 1 }→ and(0, 0) :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs'
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, x'' >= 0, z = 1 + (1 + x'') + 1
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), y' >= 0, x'' >= 0, z' = 1 + (1 + y') + 1, x3 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' = cs, cs >= 0
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
strmatch(z, z') -{ 1 }→ domatch(patstr, str, 1) :|: z' = str, patstr >= 0, str >= 0, z = patstr
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' = 1 + y, y >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: x >= 0, z = 1 + x, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
!EQ(z, z') -{ 0 }→ !EQ(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, n) :|: xs >= 0, n >= 0, z'' = n, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, n) :|: xs >= 0, n >= 0, z'' = n, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, patcs, 1 + x + xs, n) :|: patcs >= 0, xs >= 0, n >= 0, z'' = n, z' = 1 + x + xs, x >= 0, z = patcs
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, n >= 0, z'' = n, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + n + 1 :|: n >= 0, z'' = n, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(patcs, xs, 1 + n + (1 + 1 + 1)) :|: patcs >= 0, xs >= 0, n >= 0, z1 = n, z = 1, x >= 0, z' = patcs, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + n + domatch(patcs, xs, 1 + n + (1 + 1 + 1)) :|: z = 2, patcs >= 0, xs >= 0, n >= 0, z1 = n, x >= 0, z' = patcs, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, ys, 0, xs) :|: xs >= 0, ys >= 0, z' = 1 + 0 + ys, z = 1 + 0 + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, ys, 1 + x13, xs) :|: x13 >= 0, xs >= 0, ys >= 0, z' = 1 + 0 + ys, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, xs) :|: xs >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, z = 1 + 0 + xs, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(xs, ys) :|: z = 2, xs >= 0, ys >= 0, y >= 0, x >= 0, z'' = ys, z' = y, z2 = xs, z1 = x
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: xs >= 0, z = 1, ys >= 0, y >= 0, x >= 0, z'' = ys, z' = y, z2 = xs, z1 = x
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, x'' >= 0, z = 1 + (1 + x'') + 1
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), y' >= 0, x'' >= 0, z' = 1 + (1 + y') + 1, x3 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' = cs, cs >= 0
prefix(z, z') -{ 2 }→ 2 :|: xs >= 0, z' = 1 + 0 + xs, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' = 1 + (1 + y'') + 1, y'' >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, x1 >= 0, z' = 1 + 0 + xs, z = 1 + (1 + x1) + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' = 1 + (1 + y'') + 1, y'' >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z = 1 + 0 + xs', xs' >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, x1 >= 0, z' = 1 + 0 + xs, z = 1 + (1 + x1) + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, x1 >= 0, z' = 1 + 0 + xs, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + 0 + xs, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + 0 + xs, z = 1 + 0 + xs', xs' >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, x >= 0, x11 >= 0, xs10 >= 0, z' = 1 + x + 1, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, x >= 0, z = 1 + x' + 1, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(patstr, str, 1) :|: z' = str, patstr >= 0, str >= 0, z = patstr
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', z' - 3), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(z - 3, y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
{ notEmpty } { !EQ } { and } { eqNatList[Ite], eqNatList } { prefix } { domatch[Ite], domatch } { strmatch } |
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', z' - 3), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(z - 3, y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', z' - 3), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(z - 3, y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: ?, size: O(1) [2] |
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', z' - 3), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(z - 3, y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', z' - 3), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(z - 3, y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', z' - 3), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(z - 3, y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: ?, size: O(1) [2] |
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
!EQ(z, z') -{ 0 }→ !EQ(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(!EQ(x'5, x), prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](!EQ(x12, y1), 1 + y1, ys, 1 + x12, xs) :|: y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(2, and(!EQ(x'3, x8), prefix(xs'2, xs7))) :|: x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'1, x4), prefix(xs''', xs3))) :|: z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(!EQ(x'2, x6), prefix(xs'1, xs5))) :|: x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(!EQ(x'4, x10), prefix(xs'3, xs9))) :|: z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', y'), and(!EQ(x''', x2), prefix(xs'', xs1))) :|: z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 1 }→ and(!EQ(x'', y'), 0) :|: z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(!EQ(x'', z' - 3), 1) :|: xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(!EQ(z - 3, y'), 2) :|: xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](s, 1 + y1, ys, 1 + x12, xs) :|: s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(s2, 1) :|: s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(s3, 2) :|: s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ and(s4, 0) :|: s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](s, 1 + y1, ys, 1 + x12, xs) :|: s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(s2, 1) :|: s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(s3, 2) :|: s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ and(s4, 0) :|: s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: ?, size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](s, 1 + y1, ys, 1 + x12, xs) :|: s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(s2, 1) :|: s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ and(s3, 2) :|: s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ and(s4, 0) :|: s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](s, 1 + y1, ys, 1 + x12, xs) :|: s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](s, 1 + y1, ys, 1 + x12, xs) :|: s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: ?, size: O(1) [2] eqNatList: runtime: ?, size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](s, 1 + y1, ys, 1 + x12, xs) :|: s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](2, 0, z' - 1, 0, z - 1) :|: z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 0, z' - 1, 1 + x13, xs) :|: x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](1, 1 + y2, ys, 0, z - 1) :|: z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 1 }→ eqNatList[Ite](0, y, ys, x, xs) :|: z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ eqNatList(z2, z'') :|: z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: ?, size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](and(s9, prefix(xs'4, xs)), 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 2 }→ and(s'', and(s1, prefix(xs'', xs1))) :|: s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 2 }→ and(2, and(s7, prefix(xs'2, xs7))) :|: s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s5, prefix(xs''', xs3))) :|: s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 2 }→ and(1, and(s6, prefix(xs'1, xs5))) :|: s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 2 }→ and(0, and(s8, prefix(xs'3, xs9))) :|: s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: O(n1) [2 + 2·z'], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 4 + 2·xs }→ domatch[Ite](s35, 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 4 + 2·xs1 }→ s21 :|: s19 >= 0, s19 <= 2, s20 >= 0, s20 <= 2, s21 >= 0, s21 <= 2, s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 4 + 2·xs3 }→ s24 :|: s22 >= 0, s22 <= 2, s23 >= 0, s23 <= 2, s24 >= 0, s24 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 4 + 2·xs5 }→ s27 :|: s25 >= 0, s25 <= 2, s26 >= 0, s26 <= 2, s27 >= 0, s27 <= 2, s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 4 + 2·xs7 }→ s30 :|: s28 >= 0, s28 <= 2, s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 4 + 2·xs9 }→ s33 :|: s31 >= 0, s31 <= 2, s32 >= 0, s32 <= 2, s33 >= 0, s33 <= 2, s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: O(n1) [2 + 2·z'], size: O(1) [2] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 4 + 2·xs }→ domatch[Ite](s35, 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 4 + 2·xs1 }→ s21 :|: s19 >= 0, s19 <= 2, s20 >= 0, s20 <= 2, s21 >= 0, s21 <= 2, s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 4 + 2·xs3 }→ s24 :|: s22 >= 0, s22 <= 2, s23 >= 0, s23 <= 2, s24 >= 0, s24 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 4 + 2·xs5 }→ s27 :|: s25 >= 0, s25 <= 2, s26 >= 0, s26 <= 2, s27 >= 0, s27 <= 2, s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 4 + 2·xs7 }→ s30 :|: s28 >= 0, s28 <= 2, s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 4 + 2·xs9 }→ s33 :|: s31 >= 0, s31 <= 2, s32 >= 0, s32 <= 2, s33 >= 0, s33 <= 2, s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: O(n1) [2 + 2·z'], size: O(1) [2] domatch[Ite]: runtime: ?, size: O(n2) [15 + 11·z'' + z''·z1 + 4·z''2 + 3·z1] domatch: runtime: ?, size: O(n2) [84 + 70·z' + 2·z'·z'' + 16·z'2 + 6·z''] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 4 + 2·xs }→ domatch[Ite](s35, 1 + x'5 + xs'4, 1 + x + xs, z'') :|: s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 2 }→ domatch[Ite](2, 1, 1 + x + xs, z'') :|: xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 1 }→ domatch[Ite](0, z, 1 + x + xs, z'') :|: z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 0 }→ domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 0 }→ 1 + z1 + domatch(z', xs, 1 + z1 + (1 + 1 + 1)) :|: z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 4 + 2·xs1 }→ s21 :|: s19 >= 0, s19 <= 2, s20 >= 0, s20 <= 2, s21 >= 0, s21 <= 2, s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 4 + 2·xs3 }→ s24 :|: s22 >= 0, s22 <= 2, s23 >= 0, s23 <= 2, s24 >= 0, s24 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 4 + 2·xs5 }→ s27 :|: s25 >= 0, s25 <= 2, s26 >= 0, s26 <= 2, s27 >= 0, s27 <= 2, s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 4 + 2·xs7 }→ s30 :|: s28 >= 0, s28 <= 2, s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 4 + 2·xs9 }→ s33 :|: s31 >= 0, s31 <= 2, s32 >= 0, s32 <= 2, s33 >= 0, s33 <= 2, s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 1 }→ domatch(z, z', 1) :|: z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: O(n1) [2 + 2·z'], size: O(1) [2] domatch[Ite]: runtime: O(n2) [5 + 4·z'' + 2·z''2], size: O(n2) [15 + 11·z'' + z''·z1 + 4·z''2 + 3·z1] domatch: runtime: O(n2) [41 + 34·z' + 8·z'2], size: O(n2) [84 + 70·z' + 2·z'·z'' + 16·z'2 + 6·z''] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 13 + 8·x + 4·x·xs + 2·x2 + 8·xs + 2·xs2 }→ s36 :|: s36 >= 0, s36 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 12 + 8·x + 4·x·xs + 2·x2 + 8·xs + 2·xs2 }→ s37 :|: s37 >= 0, s37 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 15 + 8·x + 4·x·xs + 2·x2 + 10·xs + 2·xs2 }→ s41 :|: s41 >= 0, s41 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 41 + 34·xs + 8·xs2 }→ s39 :|: s39 >= 0, s39 <= 84 + 6 * (1 + z1 + (1 + 1 + 1)) + 70 * xs + 16 * (xs * xs) + 2 * (xs * (1 + z1 + (1 + 1 + 1))), z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 41 + 34·xs + 8·xs2 }→ 1 + z1 + s40 :|: s40 >= 0, s40 <= 84 + 6 * (1 + z1 + (1 + 1 + 1)) + 70 * xs + 16 * (xs * xs) + 2 * (xs * (1 + z1 + (1 + 1 + 1))), z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 4 + 2·xs1 }→ s21 :|: s19 >= 0, s19 <= 2, s20 >= 0, s20 <= 2, s21 >= 0, s21 <= 2, s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 4 + 2·xs3 }→ s24 :|: s22 >= 0, s22 <= 2, s23 >= 0, s23 <= 2, s24 >= 0, s24 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 4 + 2·xs5 }→ s27 :|: s25 >= 0, s25 <= 2, s26 >= 0, s26 <= 2, s27 >= 0, s27 <= 2, s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 4 + 2·xs7 }→ s30 :|: s28 >= 0, s28 <= 2, s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 4 + 2·xs9 }→ s33 :|: s31 >= 0, s31 <= 2, s32 >= 0, s32 <= 2, s33 >= 0, s33 <= 2, s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 42 + 34·z' + 8·z'2 }→ s38 :|: s38 >= 0, s38 <= 84 + 6 * 1 + 70 * z' + 16 * (z' * z') + 2 * (z' * 1), z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: O(n1) [2 + 2·z'], size: O(1) [2] domatch[Ite]: runtime: O(n2) [5 + 4·z'' + 2·z''2], size: O(n2) [15 + 11·z'' + z''·z1 + 4·z''2 + 3·z1] domatch: runtime: O(n2) [41 + 34·z' + 8·z'2], size: O(n2) [84 + 70·z' + 2·z'·z'' + 16·z'2 + 6·z''] |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 13 + 8·x + 4·x·xs + 2·x2 + 8·xs + 2·xs2 }→ s36 :|: s36 >= 0, s36 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 12 + 8·x + 4·x·xs + 2·x2 + 8·xs + 2·xs2 }→ s37 :|: s37 >= 0, s37 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 15 + 8·x + 4·x·xs + 2·x2 + 10·xs + 2·xs2 }→ s41 :|: s41 >= 0, s41 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 41 + 34·xs + 8·xs2 }→ s39 :|: s39 >= 0, s39 <= 84 + 6 * (1 + z1 + (1 + 1 + 1)) + 70 * xs + 16 * (xs * xs) + 2 * (xs * (1 + z1 + (1 + 1 + 1))), z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 41 + 34·xs + 8·xs2 }→ 1 + z1 + s40 :|: s40 >= 0, s40 <= 84 + 6 * (1 + z1 + (1 + 1 + 1)) + 70 * xs + 16 * (xs * xs) + 2 * (xs * (1 + z1 + (1 + 1 + 1))), z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 4 + 2·xs1 }→ s21 :|: s19 >= 0, s19 <= 2, s20 >= 0, s20 <= 2, s21 >= 0, s21 <= 2, s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 4 + 2·xs3 }→ s24 :|: s22 >= 0, s22 <= 2, s23 >= 0, s23 <= 2, s24 >= 0, s24 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 4 + 2·xs5 }→ s27 :|: s25 >= 0, s25 <= 2, s26 >= 0, s26 <= 2, s27 >= 0, s27 <= 2, s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 4 + 2·xs7 }→ s30 :|: s28 >= 0, s28 <= 2, s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 4 + 2·xs9 }→ s33 :|: s31 >= 0, s31 <= 2, s32 >= 0, s32 <= 2, s33 >= 0, s33 <= 2, s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 42 + 34·z' + 8·z'2 }→ s38 :|: s38 >= 0, s38 <= 84 + 6 * 1 + 70 * z' + 16 * (z' * z') + 2 * (z' * 1), z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: O(n1) [2 + 2·z'], size: O(1) [2] domatch[Ite]: runtime: O(n2) [5 + 4·z'' + 2·z''2], size: O(n2) [15 + 11·z'' + z''·z1 + 4·z''2 + 3·z1] domatch: runtime: O(n2) [41 + 34·z' + 8·z'2], size: O(n2) [84 + 70·z' + 2·z'·z'' + 16·z'2 + 6·z''] strmatch: runtime: ?, size: INF |
!EQ(z, z') -{ 0 }→ s' :|: s' >= 0, s' <= 2, z - 1 >= 0, z' - 1 >= 0
!EQ(z, z') -{ 0 }→ 2 :|: z = 0, z' = 0
!EQ(z, z') -{ 0 }→ 1 :|: z' - 1 >= 0, z = 0
!EQ(z, z') -{ 0 }→ 1 :|: z - 1 >= 0, z' = 0
!EQ(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
and(z, z') -{ 0 }→ 2 :|: z = 2, z' = 2
and(z, z') -{ 0 }→ 1 :|: z = 1, z' = 1
and(z, z') -{ 0 }→ 1 :|: z = 2, z' = 1
and(z, z') -{ 0 }→ 1 :|: z' = 2, z = 1
and(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
domatch(z, z', z'') -{ 13 + 8·x + 4·x·xs + 2·x2 + 8·xs + 2·xs2 }→ s36 :|: s36 >= 0, s36 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), xs >= 0, z'' >= 0, z' = 1 + x + xs, z = 1, x >= 0
domatch(z, z', z'') -{ 12 + 8·x + 4·x·xs + 2·x2 + 8·xs + 2·xs2 }→ s37 :|: s37 >= 0, s37 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), z >= 0, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0
domatch(z, z', z'') -{ 15 + 8·x + 4·x·xs + 2·x2 + 10·xs + 2·xs2 }→ s41 :|: s41 >= 0, s41 <= 3 * z'' + 15 + 4 * ((1 + x + xs) * (1 + x + xs)) + 11 * (1 + x + xs) + 1 * ((1 + x + xs) * z''), s34 >= 0, s34 <= 2, s35 >= 0, s35 <= 2, s9 >= 0, s9 <= 2, xs >= 0, z'' >= 0, z' = 1 + x + xs, x >= 0, z = 1 + x'5 + xs'4, xs'4 >= 0, x'5 >= 0
domatch(z, z', z'') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, z'' >= 0, x >= 0, z' = 1
domatch(z, z', z'') -{ 1 }→ 1 + z'' + 1 :|: z'' >= 0, z = 1, z' = 1
domatch[Ite](z, z', z'', z1) -{ 41 + 34·xs + 8·xs2 }→ s39 :|: s39 >= 0, s39 <= 84 + 6 * (1 + z1 + (1 + 1 + 1)) + 70 * xs + 16 * (xs * xs) + 2 * (xs * (1 + z1 + (1 + 1 + 1))), z' >= 0, xs >= 0, z1 >= 0, z = 1, x >= 0, z'' = 1 + x + xs
domatch[Ite](z, z', z'', z1) -{ 0 }→ 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0
domatch[Ite](z, z', z'', z1) -{ 41 + 34·xs + 8·xs2 }→ 1 + z1 + s40 :|: s40 >= 0, s40 <= 84 + 6 * (1 + z1 + (1 + 1 + 1)) + 70 * xs + 16 * (xs * xs) + 2 * (xs * (1 + z1 + (1 + 1 + 1))), z = 2, z' >= 0, xs >= 0, z1 >= 0, x >= 0, z'' = 1 + x + xs
eqNatList(z, z') -{ 2 + xs }→ s13 :|: s13 >= 0, s13 <= 2, s >= 0, s <= 2, y1 >= 0, xs >= 0, z = 1 + (1 + x12) + xs, ys >= 0, z' = 1 + (1 + y1) + ys, x12 >= 0
eqNatList(z, z') -{ 1 + z }→ s14 :|: s14 >= 0, s14 <= 2, z - 1 >= 0, z' = 1 + (1 + y2) + ys, ys >= 0, y2 >= 0
eqNatList(z, z') -{ 2 + xs }→ s15 :|: s15 >= 0, s15 <= 2, x13 >= 0, xs >= 0, z' - 1 >= 0, z = 1 + (1 + x13) + xs
eqNatList(z, z') -{ 1 + z }→ s16 :|: s16 >= 0, s16 <= 2, z - 1 >= 0, z' - 1 >= 0
eqNatList(z, z') -{ 2 + xs }→ s17 :|: s17 >= 0, s17 <= 2, z = 1 + x + xs, xs >= 0, ys >= 0, x >= 0, y >= 0, z' = 1 + y + ys
eqNatList(z, z') -{ 1 }→ 2 :|: z = 1, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
eqNatList(z, z') -{ 1 }→ 1 :|: z = 1, ys >= 0, y >= 0, z' = 1 + y + ys
eqNatList[Ite](z, z', z'', z1, z2) -{ 1 + z2 }→ s18 :|: s18 >= 0, s18 <= 2, z = 2, z2 >= 0, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 1 :|: z2 >= 0, z = 1, z'' >= 0, z' >= 0, z1 >= 0
eqNatList[Ite](z, z', z'', z1, z2) -{ 0 }→ 0 :|: z >= 0, z2 >= 0, z' >= 0, z'' >= 0, z1 >= 0
notEmpty(z) -{ 1 }→ 2 :|: z = 1 + x + xs, xs >= 0, x >= 0
notEmpty(z) -{ 1 }→ 1 :|: z = 1
prefix(z, z') -{ 2 }→ s10 :|: s10 >= 0, s10 <= 2, s2 >= 0, s2 <= 2, xs2 >= 0, z = 1 + (1 + x'') + (1 + x3 + xs2), z' - 3 >= 0, x'' >= 0, x3 >= 0
prefix(z, z') -{ 2 }→ s11 :|: s11 >= 0, s11 <= 2, s3 >= 0, s3 <= 2, xs >= 0, z' = 1 + (1 + y') + xs, y' >= 0, z - 3 >= 0
prefix(z, z') -{ 1 }→ s12 :|: s12 >= 0, s12 <= 2, s4 >= 0, s4 <= 2, z = 1 + (1 + x'') + xs', xs >= 0, z' = 1 + (1 + y') + xs, xs' >= 0, y' >= 0, x'' >= 0
prefix(z, z') -{ 4 + 2·xs1 }→ s21 :|: s19 >= 0, s19 <= 2, s20 >= 0, s20 <= 2, s21 >= 0, s21 <= 2, s'' >= 0, s'' <= 2, s1 >= 0, s1 <= 2, z = 1 + (1 + x'') + (1 + x''' + xs''), z' = 1 + (1 + y') + (1 + x2 + xs1), xs'' >= 0, y' >= 0, xs1 >= 0, x''' >= 0, x'' >= 0, x2 >= 0
prefix(z, z') -{ 4 + 2·xs3 }→ s24 :|: s22 >= 0, s22 <= 2, s23 >= 0, s23 <= 2, s24 >= 0, s24 <= 2, s5 >= 0, s5 <= 2, z' = 1 + (1 + y'') + (1 + x4 + xs3), x4 >= 0, x'1 >= 0, z = 1 + 0 + (1 + x'1 + xs'''), y'' >= 0, xs''' >= 0, xs3 >= 0
prefix(z, z') -{ 4 + 2·xs5 }→ s27 :|: s25 >= 0, s25 <= 2, s26 >= 0, s26 <= 2, s27 >= 0, s27 <= 2, s6 >= 0, s6 <= 2, x1 >= 0, z' = 1 + 0 + (1 + x6 + xs5), x'2 >= 0, x6 >= 0, z = 1 + (1 + x1) + (1 + x'2 + xs'1), xs5 >= 0, xs'1 >= 0
prefix(z, z') -{ 4 + 2·xs7 }→ s30 :|: s28 >= 0, s28 <= 2, s29 >= 0, s29 <= 2, s30 >= 0, s30 <= 2, s7 >= 0, s7 <= 2, x8 >= 0, x'3 >= 0, z' = 1 + 0 + (1 + x8 + xs7), xs7 >= 0, z = 1 + 0 + (1 + x'3 + xs'2), xs'2 >= 0
prefix(z, z') -{ 4 + 2·xs9 }→ s33 :|: s31 >= 0, s31 <= 2, s32 >= 0, s32 <= 2, s33 >= 0, s33 <= 2, s8 >= 0, s8 <= 2, z = 1 + x' + (1 + x'4 + xs'3), z' = 1 + x + (1 + x10 + xs9), x' >= 0, x >= 0, x'4 >= 0, x10 >= 0, xs9 >= 0, xs'3 >= 0
prefix(z, z') -{ 1 }→ 2 :|: z = 1, z' >= 0
prefix(z, z') -{ 2 }→ 2 :|: z' - 1 >= 0, z = 1 + 0 + 1, 2 = 2
prefix(z, z') -{ 1 }→ 1 :|: z = 1 + x + xs, xs >= 0, x >= 0, z' = 1
prefix(z, z') -{ 2 }→ 1 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z' - 1 >= 0, z - 3 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 2 }→ 1 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, 2 = 2, 1 = 1
prefix(z, z') -{ 0 }→ 0 :|: z >= 0, z' >= 0
prefix(z, z') -{ 2 }→ 0 :|: x5 >= 0, z' - 3 >= 0, xs4 >= 0, z = 1 + 0 + (1 + x5 + xs4), v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z - 1 >= 0, z' = 1 + (1 + y'') + xs, y'' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs6 >= 0, x1 >= 0, z' = 1 + 0 + 1, z = 1 + (1 + x1) + (1 + x7 + xs6), x7 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z - 3 >= 0, v0 >= 0, v1 >= 0, 1 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, x1 >= 0, z = 1 + (1 + x1) + xs', xs' >= 0, v0 >= 0, v1 >= 0, 1 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + 0 + (1 + x9 + xs8), z' = 1 + 0 + 1, xs8 >= 0, x9 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: z' - 1 >= 0, z = 1 + 0 + 1, v0 >= 0, v1 >= 0, 2 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, v1 >= 0, 2 = v0, 0 = v1
prefix(z, z') -{ 2 }→ 0 :|: z = 1 + x' + (1 + x11 + xs10), x' >= 0, z' - 2 >= 0, x11 >= 0, xs10 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 1 = v1
prefix(z, z') -{ 2 }→ 0 :|: xs >= 0, z' = 1 + x + xs, z - 2 >= 0, x >= 0, v0 >= 0, v1 >= 0, 0 = v0, 2 = v1
prefix(z, z') -{ 1 }→ 0 :|: xs >= 0, z' = 1 + x + xs, x' >= 0, xs' >= 0, x >= 0, z = 1 + x' + xs', v0 >= 0, v1 >= 0, 0 = v0, 0 = v1
strmatch(z, z') -{ 42 + 34·z' + 8·z'2 }→ s38 :|: s38 >= 0, s38 <= 84 + 6 * 1 + 70 * z' + 16 * (z' * z') + 2 * (z' * 1), z >= 0, z' >= 0
notEmpty: runtime: O(1) [1], size: O(1) [2] !EQ: runtime: O(1) [0], size: O(1) [2] and: runtime: O(1) [0], size: O(1) [2] eqNatList[Ite]: runtime: O(n1) [1 + z2], size: O(1) [2] eqNatList: runtime: O(n1) [1 + z], size: O(1) [2] prefix: runtime: O(n1) [2 + 2·z'], size: O(1) [2] domatch[Ite]: runtime: O(n2) [5 + 4·z'' + 2·z''2], size: O(n2) [15 + 11·z'' + z''·z1 + 4·z''2 + 3·z1] domatch: runtime: O(n2) [41 + 34·z' + 8·z'2], size: O(n2) [84 + 70·z' + 2·z'·z'' + 16·z'2 + 6·z''] strmatch: runtime: O(n2) [42 + 34·z' + 8·z'2], size: INF |